#ifndef JPROJECTITEM_HPP
#define JPROJECTITEM_HPP

#include <QtXml/QDomElement>
#include <QString>

class JProjectItem {
public:
  virtual ~JProjectItem(){} ;
  virtual QString getName (                 ) const = 0 ;
//  virtual void    setName ( const QString & )       = 0 ;
//  virtual QString getTitle       ( ) const = 0 ;
//  virtual QString getDescription ( ) const = 0 ;
} ;

class JProject {
public:
  virtual ~JProject(){} ;
  virtual void          addChild ( JProjectItem * ) =0 ;
  virtual JProjectItem *getChild ( const QString & xName ) const =0 ;
  virtual JProjectItem *getChild ( int xOrdinal ) const =0 ;
} ;

class JProjectItemFactory {
public:
  virtual ~JProjectItemFactory(){} ;
  virtual QString       getTitle       () const =0 ;
  virtual QString       getDescription () const =0 ;
  virtual QString       getIcon        () const =0 ;
  virtual JProjectItem *Create (                      ) const =0 ;
  virtual JProjectItem *Create ( QDomElement xElement ) const = 0 ;
} ;

Q_DECLARE_INTERFACE(JProjectItem,"com.alchemy.JProjectItem/1.0")
Q_DECLARE_INTERFACE(JProject,"com.alchemy.JProject/1.0")
Q_DECLARE_INTERFACE(JProjectItemFactory,"com.alchemy.JProjectItemFactory/1.0")

#endif // JPROJECTITEM_HPP
